//-------------------------------------------------------------------
//	Copyright (c) 2010-2014  Zhirnov Andrey
//	This file is part of the "UX Standard Lib" project.
//	See copyright notice in "UX_STL_Ext.h".
//-------------------------------------------------------------------

#ifndef _UXS_SDL_KEY_CODES_H
#define _UXS_SDL_KEY_CODES_H

#pragma once

#ifdef PLATFORM_SDL

namespace UX_STL
{
namespace _platform_
{


//-------------------------- SDL Key Codes ------------------------//

namespace e_sdl_key
{
	enum	type
	{
		A			= SDL_SCANCODE_A,
		B			= SDL_SCANCODE_B,
		C			= SDL_SCANCODE_C,
		D			= SDL_SCANCODE_D,
		E			= SDL_SCANCODE_E,
		F			= SDL_SCANCODE_F,
		G			= SDL_SCANCODE_G,
		H			= SDL_SCANCODE_H,
		I			= SDL_SCANCODE_I,
		J			= SDL_SCANCODE_J,
		K			= SDL_SCANCODE_K,
		L			= SDL_SCANCODE_L,
		M			= SDL_SCANCODE_M,
		N			= SDL_SCANCODE_N,
		O			= SDL_SCANCODE_O,
		P			= SDL_SCANCODE_P,
		Q			= SDL_SCANCODE_Q,
		R			= SDL_SCANCODE_R,
		S			= SDL_SCANCODE_S,
		T			= SDL_SCANCODE_T,
		U			= SDL_SCANCODE_U,
		V			= SDL_SCANCODE_V,
		W			= SDL_SCANCODE_W,
		X			= SDL_SCANCODE_X,
		Y			= SDL_SCANCODE_Y,
		Z			= SDL_SCANCODE_Z,

		n1			= SDL_SCANCODE_1,
		n2			= SDL_SCANCODE_2,
		n3			= SDL_SCANCODE_3,
		n4			= SDL_SCANCODE_4,
		n5			= SDL_SCANCODE_5,
		n6			= SDL_SCANCODE_6,
		n7			= SDL_SCANCODE_7,
		n8			= SDL_SCANCODE_8,
		n9			= SDL_SCANCODE_9,
		n0			= SDL_SCANCODE_0,

		RETURN			= SDL_SCANCODE_RETURN,
		ESCAPE			= SDL_SCANCODE_ESCAPE,
		BACKSPACE		= SDL_SCANCODE_BACKSPACE,
		TAB				= SDL_SCANCODE_TAB,
		SPACE			= SDL_SCANCODE_SPACE,
		CAPSLOCK		= SDL_SCANCODE_CAPSLOCK,

		MINUS			= SDL_SCANCODE_MINUS,
		EQUALS			= SDL_SCANCODE_EQUALS,
		LEFTBRACKET		= SDL_SCANCODE_LEFTBRACKET,
		RIGHTBRACKET	= SDL_SCANCODE_RIGHTBRACKET,
		BACKSLASH		= SDL_SCANCODE_BACKSLASH,
		NONUSHASH		= SDL_SCANCODE_NONUSHASH,
		SEMICOLON		= SDL_SCANCODE_SEMICOLON,
		APOSTROPHE		= SDL_SCANCODE_APOSTROPHE,
		GRAVE			= SDL_SCANCODE_GRAVE,
		COMMA			= SDL_SCANCODE_COMMA,
		PERIOD			= SDL_SCANCODE_PERIOD,
		SLASH			= SDL_SCANCODE_SLASH,
		
		F1				= SDL_SCANCODE_F1,
		F2				= SDL_SCANCODE_F2,
		F3				= SDL_SCANCODE_F3,
		F4				= SDL_SCANCODE_F4,
		F5				= SDL_SCANCODE_F5,
		F6				= SDL_SCANCODE_F6,
		F7				= SDL_SCANCODE_F7,
		F8				= SDL_SCANCODE_F8,
		F9				= SDL_SCANCODE_F9,
		F10				= SDL_SCANCODE_F10,
		F11				= SDL_SCANCODE_F11,
		F12				= SDL_SCANCODE_F12,
		/*
		SDL_SCANCODE_PRINTSCREEN = 70,
		SDL_SCANCODE_SCROLLLOCK = 71,
		SDL_SCANCODE_PAUSE = 72,
		SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
									   does send code 73, not 117) 
		SDL_SCANCODE_HOME = 74,
		SDL_SCANCODE_PAGEUP = 75,
		SDL_SCANCODE_DELETE = 76,
		SDL_SCANCODE_END = 77,
		SDL_SCANCODE_PAGEDOWN = 78,
		SDL_SCANCODE_RIGHT = 79,
		SDL_SCANCODE_LEFT = 80,
		SDL_SCANCODE_DOWN = 81,
		SDL_SCANCODE_UP = 82,

		SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
										 
		SDL_SCANCODE_KP_DIVIDE = 84,
		SDL_SCANCODE_KP_MULTIPLY = 85,
		SDL_SCANCODE_KP_MINUS = 86,
		SDL_SCANCODE_KP_PLUS = 87,
		SDL_SCANCODE_KP_ENTER = 88,
		SDL_SCANCODE_KP_1 = 89,
		SDL_SCANCODE_KP_2 = 90,
		SDL_SCANCODE_KP_3 = 91,
		SDL_SCANCODE_KP_4 = 92,
		SDL_SCANCODE_KP_5 = 93,
		SDL_SCANCODE_KP_6 = 94,
		SDL_SCANCODE_KP_7 = 95,
		SDL_SCANCODE_KP_8 = 96,
		SDL_SCANCODE_KP_9 = 97,
		SDL_SCANCODE_KP_0 = 98,
		SDL_SCANCODE_KP_PERIOD = 99,

		SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
											*   keyboards have over ANSI ones,
											*   located between left shift and Y.
											*   Produces GRAVE ACCENT and TILDE in a
											*   US or UK Mac layout, REVERSE SOLIDUS
											*   (backslash) and VERTICAL LINE in a
											*   US or UK Windows layout, and
											*   LESS-THAN SIGN and GREATER-THAN SIGN
											*   in a Swiss German, German, or French
											*   layout. 
		SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose 
		SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
								   *   not a physical key - but some Mac keyboards
								   *   do have a power key. 
		SDL_SCANCODE_KP_EQUALS = 103,
		SDL_SCANCODE_F13 = 104,
		SDL_SCANCODE_F14 = 105,
		SDL_SCANCODE_F15 = 106,
		SDL_SCANCODE_F16 = 107,
		SDL_SCANCODE_F17 = 108,
		SDL_SCANCODE_F18 = 109,
		SDL_SCANCODE_F19 = 110,
		SDL_SCANCODE_F20 = 111,
		SDL_SCANCODE_F21 = 112,
		SDL_SCANCODE_F22 = 113,
		SDL_SCANCODE_F23 = 114,
		SDL_SCANCODE_F24 = 115,
		SDL_SCANCODE_EXECUTE = 116,
		SDL_SCANCODE_HELP = 117,
		SDL_SCANCODE_MENU = 118,
		SDL_SCANCODE_SELECT = 119,
		SDL_SCANCODE_STOP = 120,
		SDL_SCANCODE_AGAIN = 121,   /**< redo 
		SDL_SCANCODE_UNDO = 122,
		SDL_SCANCODE_CUT = 123,
		SDL_SCANCODE_COPY = 124,
		SDL_SCANCODE_PASTE = 125,
		SDL_SCANCODE_FIND = 126,
		SDL_SCANCODE_MUTE = 127,
		SDL_SCANCODE_VOLUMEUP = 128,
		SDL_SCANCODE_VOLUMEDOWN = 129,
	/* not sure whether there's a reason to enable these */
	/*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
	/*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
	/*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, 
		SDL_SCANCODE_KP_COMMA = 133,
		SDL_SCANCODE_KP_EQUALSAS400 = 134,

		SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
												footnotes in USB doc 
		SDL_SCANCODE_INTERNATIONAL2 = 136,
		SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen 
		SDL_SCANCODE_INTERNATIONAL4 = 138,
		SDL_SCANCODE_INTERNATIONAL5 = 139,
		SDL_SCANCODE_INTERNATIONAL6 = 140,
		SDL_SCANCODE_INTERNATIONAL7 = 141,
		SDL_SCANCODE_INTERNATIONAL8 = 142,
		SDL_SCANCODE_INTERNATIONAL9 = 143,
		SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle 
		SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion *
		SDL_SCANCODE_LANG3 = 146, /**< Katakana *
		SDL_SCANCODE_LANG4 = 147, /**< Hiragana *
		SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku *
		SDL_SCANCODE_LANG6 = 149, /**< reserved *
		SDL_SCANCODE_LANG7 = 150, /**< reserved *
		SDL_SCANCODE_LANG8 = 151, /**< reserved *
		SDL_SCANCODE_LANG9 = 152, /**< reserved *

		SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze *
		SDL_SCANCODE_SYSREQ = 154,
		SDL_SCANCODE_CANCEL = 155,
		SDL_SCANCODE_CLEAR = 156,
		SDL_SCANCODE_PRIOR = 157,
		SDL_SCANCODE_RETURN2 = 158,
		SDL_SCANCODE_SEPARATOR = 159,
		SDL_SCANCODE_OUT = 160,
		SDL_SCANCODE_OPER = 161,
		SDL_SCANCODE_CLEARAGAIN = 162,
		SDL_SCANCODE_CRSEL = 163,
		SDL_SCANCODE_EXSEL = 164,

		SDL_SCANCODE_KP_00 = 176,
		SDL_SCANCODE_KP_000 = 177,
		SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
		SDL_SCANCODE_DECIMALSEPARATOR = 179,
		SDL_SCANCODE_CURRENCYUNIT = 180,
		SDL_SCANCODE_CURRENCYSUBUNIT = 181,
		SDL_SCANCODE_KP_LEFTPAREN = 182,
		SDL_SCANCODE_KP_RIGHTPAREN = 183,
		SDL_SCANCODE_KP_LEFTBRACE = 184,
		SDL_SCANCODE_KP_RIGHTBRACE = 185,
		SDL_SCANCODE_KP_TAB = 186,
		SDL_SCANCODE_KP_BACKSPACE = 187,
		SDL_SCANCODE_KP_A = 188,
		SDL_SCANCODE_KP_B = 189,
		SDL_SCANCODE_KP_C = 190,
		SDL_SCANCODE_KP_D = 191,
		SDL_SCANCODE_KP_E = 192,
		SDL_SCANCODE_KP_F = 193,
		SDL_SCANCODE_KP_XOR = 194,
		SDL_SCANCODE_KP_POWER = 195,
		SDL_SCANCODE_KP_PERCENT = 196,
		SDL_SCANCODE_KP_LESS = 197,
		SDL_SCANCODE_KP_GREATER = 198,
		SDL_SCANCODE_KP_AMPERSAND = 199,
		SDL_SCANCODE_KP_DBLAMPERSAND = 200,
		SDL_SCANCODE_KP_VERTICALBAR = 201,
		SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
		SDL_SCANCODE_KP_COLON = 203,
		SDL_SCANCODE_KP_HASH = 204,
		SDL_SCANCODE_KP_SPACE = 205,
		SDL_SCANCODE_KP_AT = 206,
		SDL_SCANCODE_KP_EXCLAM = 207,
		SDL_SCANCODE_KP_MEMSTORE = 208,
		SDL_SCANCODE_KP_MEMRECALL = 209,
		SDL_SCANCODE_KP_MEMCLEAR = 210,
		SDL_SCANCODE_KP_MEMADD = 211,
		SDL_SCANCODE_KP_MEMSUBTRACT = 212,
		SDL_SCANCODE_KP_MEMMULTIPLY = 213,
		SDL_SCANCODE_KP_MEMDIVIDE = 214,
		SDL_SCANCODE_KP_PLUSMINUS = 215,
		SDL_SCANCODE_KP_CLEAR = 216,
		SDL_SCANCODE_KP_CLEARENTRY = 217,
		SDL_SCANCODE_KP_BINARY = 218,
		SDL_SCANCODE_KP_OCTAL = 219,
		SDL_SCANCODE_KP_DECIMAL = 220,
		SDL_SCANCODE_KP_HEXADECIMAL = 221,

		SDL_SCANCODE_LCTRL = 224,
		SDL_SCANCODE_LSHIFT = 225,
		SDL_SCANCODE_LALT = 226, /**< alt, option *
		SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta *
		SDL_SCANCODE_RCTRL = 228,
		SDL_SCANCODE_RSHIFT = 229,
		SDL_SCANCODE_RALT = 230, /**< alt gr, option *
		SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */

		MODE			= SDL_SCANCODE_MODE,
		AUDIONEXT		= SDL_SCANCODE_AUDIONEXT,
		AUDIOPREV		= SDL_SCANCODE_AUDIOPREV,
		AUDIOSTOP		= SDL_SCANCODE_AUDIOSTOP,
		AUDIOPLAY		= SDL_SCANCODE_AUDIOPLAY,
		AUDIOMUTE		= SDL_SCANCODE_AUDIOMUTE,
		MEDIASELECT		= SDL_SCANCODE_MEDIASELECT,
		WWW				= SDL_SCANCODE_WWW,
		MAIL			= SDL_SCANCODE_MAIL,
		CALCULATOR		= SDL_SCANCODE_CALCULATOR,
		COMPUTER		= SDL_SCANCODE_COMPUTER,
		AC_SEARCH		= SDL_SCANCODE_AC_SEARCH,
		AC_HOME			= SDL_SCANCODE_AC_HOME,
		AC_BACK			= SDL_SCANCODE_AC_BACK,
		AC_FORWARD		= SDL_SCANCODE_AC_FORWARD,
		AC_STOP			= SDL_SCANCODE_AC_STOP,
		AC_REFRESH		= SDL_SCANCODE_AC_REFRESH,
		AC_BOOKMARKS	= SDL_SCANCODE_AC_BOOKMARKS,
		BRIGHTNESSDOWN	= SDL_SCANCODE_BRIGHTNESSDOWN,
		BRIGHTNESSUP	= SDL_SCANCODE_BRIGHTNESSUP,
		DISPLAYSWITCH	= SDL_SCANCODE_DISPLAYSWITCH,
		KBDILLUMTOGGLE	= SDL_SCANCODE_KBDILLUMTOGGLE,
		KBDILLUMDOWN	= SDL_SCANCODE_KBDILLUMDOWN,
		KBDILLUMUP		= SDL_SCANCODE_KBDILLUMUP,
		EJECT			= SDL_SCANCODE_EJECT,
		SLEEP			= SDL_SCANCODE_SLEEP,

		APP1			= SDL_SCANCODE_APP1,
		APP2			= SDL_SCANCODE_APP2,

		_COUNT			= SDL_NUM_SCANCODES
	};

}	// e_sdl_key

//-------------------------------------------------------------------

}	// _platform_
}	// Engine

#endif	// PLATFORM_SDL
#endif	// _UXS_SDL_KEY_CODES_H